package vebugger.templates; import java.util.LinkedList; import vebugger.VebuggerTemplate; import vebugger.VisualDebuggerAid; public class LinkedListTemplate extends VebuggerTemplate { @Override public Class<?> getType() { return LinkedList.class; } @Override public void render(StringBuilder sb, Object obj) { LinkedList<?> list = (LinkedList<?>) obj; sb.append("<style>"); sb.append("table.java-util-LinkedList {border-collapse: collapse; font-size: 12px;}"); sb.append("table.java-util-LinkedList > * > tr > * {padding: 4px; text-align: center;}"); sb.append("table.java-util-LinkedList > thead > tr {border-bottom: 2px solid black;}"); sb.append("table.java-util-LinkedList > * > tr > *:first-child {border-right: 1px dotted gray;}"); sb.append("table.java-util-LinkedList > tbody > tr > th {color: gray; font-weight: normal;}"); sb.append("table.java-util-LinkedList > tbody > tr > td:last-child > div {border: 1px dotted silver; -webkit-border-radius: 10px; -moz-border-radius: 10px; border-radius: 10px; display: inline-block; padding: 10px; text-align: initial;}"); sb.append("</style>"); if (list.size() > 0) { sb.append("<table class=\"java-util-LinkedList\"><thead><tr><th>Index</th><th>Value</th></tr></thead><tbody><tr><th></th><th>head</th></tr><tr><th></th><td>↑ ↓</td></tr>"); int i = 0; for (Object o : list) { sb.append("<tr><th>").append(i).append("</th><td><div>").append(VisualDebuggerAid.toString(o, false)) .append("</div></td></tr>"); sb.append("<tr><th></th><td>↑ ↓</td></tr>"); i++; } sb.append("<tr><th></th><th>tail</th></tr></tbody></table>"); } else { sb.append("[] <span style=\"color: gray; font-style: italic;\">(empty LinkedList)</span>"); } } }